import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

// 表示一个坐标
class Position {
    public int x;
    public int y;
    // 记录从入口到 (x,y) 所走的步数
    public int count;

    public Position(int x, int y, int count) {
        this.x = x;
        this.y = y;
        this.count = count;
    }
}

// 走迷宫
// 广度优先遍历
// 一层走完, 再走下一层 (一层一个步数)
// 最先到达出口的就是最优路径
public class day230513 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            char[][] map = new char[10][10];
            for (int i = 0; i < 10; i++) {
                map[i] = sc.nextLine().toCharArray();
            }

            System.out.println(bfs(map, 10, 10));
        }
    }

    private static int bfs(char[][] map, int row, int col) {
        // 下, 右, 左, 上
        int[][] direct = {{1, 0}, {0, 1}, {0, -1}, {-1, 0}};

        // 标记数组
        // boolean[][] flag = new boolean[row][col];

        // 入口坐标入队
        Position start = new Position(0, 1, 0);
        Queue<Position> queue = new LinkedList<>();
        queue.offer(start);

        // 循环, 队列不为空
        while (!queue.isEmpty()) {
            // 从队列中取出一个坐标
            Position cur = queue.poll();

            // 标记该位置
            map[cur.x][cur.y] = '#';

            // 判断是否到达出口
            if (cur.x == 9 && cur.y == 8) {
                return cur.count;
            }

            // 这个坐标的四个方向, 如果合法就入队
            for (int i = 0; i < 4; ++i) {
                Position next = new Position(cur.x + direct[i][0], cur.y + direct[i][1], cur.count + 1);
                // 判断坐标是否合法, 判断是否是墙壁, 判断是否走过
                if (0 <= next.x && next.x < row && 0 <= next.y && next.y < col && map[next.x][next.y] == '.') {
                    queue.add(next);
                }
            }
        }

        return 0;
    }
}
